|
| |||||||||||
| ||||||||||||
Perl 语言全面编译(五)天水-S.Tanshuai |
| 第五节 OOP面向对象的程序之为编译而设计 |
| 面向对象的程序设计已经不是什么新颖的话题和技术了。它在C++和Java中,尤为重要,哎,我觉得在写大宗程序的时候会很有帮助,但是在小程序里面反而麻烦,还不如普通的函数使用。OOP大多数基本的Perl教程都有说明,所以这里也不多讲“废话”,主要讲述OOP在编译Perl程序中的应用以及Perl OOP编写的技巧,所以值得一看。 |
| 前面说过在PerlCC编译可执行程序的时候,不要使用require函数,这是没有错的。但是有很多人写require习惯了,而且不经常接触OOP模式,所以不习惯。 |
| 其实使用use比require 好很多,还有很多人用require引入变量,这是大大错误,这是一种程序上编写的失误,所以建议以后大家不要用这种方式。编译的时候也不要用这种放式?那么用什么方式?如果你是一个有经验的Perl程序员,你应该知道。使用OPEN函数,传送变量值。这是编译Perl程序的关键,一些定量(不变的量),最好放在程序内部,变量以及客户所需要设置的量使用我先前说的那种方式。具体实践方法: |
| ||||||||||||
| 这样就解决了配置变量的问题,我想这个函数对某些人一定会有很重要的意义。 |
| 在这里OOP就是use 方式的调用。 |
| 现在我们要着重讨论OOP问题了,如果你不想把一大堆的程序代码写在一个文件中,那么使用OOP就最好了,原来是可以使用require,但这里不可一。OOP在Perl的好处显而易见,首先可以编译,即使不编译,它也同require有明显差异。 |
| OOP是在程序需要时调入,不需要时自动消失(通常说破坏对象)。require则不然,一旦调入一直存在,除非你使用exit 函数,所以在某些方面影响了程序的效率。 |
| 例如我们要写一个Shell程序,一共需要一下部分:输入/输出(I/O)、命令判断(CMD)、System(系统操作)。 |
| 我们平时也可以使用require,在编译的时候就好了,同样我们虽然可以按照子程序放在一个程序里面,但是在这里只是例子,但是在大宗商业项目中,这样做是显然费时费力的,会增加维护成本,无法联合开发等多种弊端。 |
| 我们把他们分为4个文件3个模块一个主程序(编译):IO.pm、CMD.pm、System.pm、Shell.pl。 |
| 首先要构造对象: |
| ||||
| 虽然上面的构造有些不好的地方,但是它是通用对象的构造方法,利于调试,如果你认为没程序上的问题,就可以“封包”,适当修改变量传引方式。 |
| 这里的所有对象只有是一个单一函数,只包括:构造对象和操作对象的两个部分,这是一个简单的对象引用,但是这种应用在实际的开发总是相当无畏的,在这里是为了方便教大家,所以不要什么程序都要对象。 |
| ||||||||||||
| 以上各个模块(对象)已经建立完毕,我们现在只需要设计一个简单的操作对象程序。这个时候你发现搞对象原始是如此简单:) |
| ||||
| 这样就完成了,你可能问为什么没有使用对象System ?那是因为在对象CMD中继承对象System,所以我们不需要在程序中使用System,要不然就累了。 |
| 当你看到shell.pl程序时候,你有何感想?是不是觉得搞对象简单了很多呢?给我的想法就是,以后程序员会越来越多,因为对象编程太简单了,而我们呢?哎,我们就去做对象。以后编程和做对象的人可能要区分开来了。 |
| 现在编译shell.pl后,把这些对象删除,看看能否使用?当然能,假如你使用require就出现无法执行的致命错误。 |
| 哎呀,好累了。我就要吐血了 #$@,还没有吃晚饭呢。明日继续吧。 |
| 这里告诉大家编译Perl在较大或者较复杂的程序项目中,使用对象,会有很好的作用。你可能会问,用对象编译出来的程序如此之大,是否会影响效率?肯定会,但是它并非明显,就好像一个小小的15KB的程序,在运行的时候可能占用超过100MB的内存。由于它会整个被内存启动,但是并不会有较大幅度的效率下降。如果还想使用类似require的方法,就要看最后一章了。 |
| (网页编辑:徐向阳) |
| 相关文章 |
| [关闭窗口] |
Copyright(C) ccw.com.cn,All rights reserved
中国计算机世界出版服务公司版权所有